#include <cstdio>
#include <cstdlib>
#include <time.h>
#include "elementsGenerique.H"
#include "SkipList.H"
using namespace std;

int main(void)
{ 
	SListe Sl;
	int choix;
	Initialisation(Sl);
	Element e;
	initialisationEltIntervalle (e);
	bool continuer = true;
	
	while (continuer)
	  {
	    printf("\n");
	    printf("============================MENU INTERVALLE============================\n");
	    printf("\n");
	    printf("----------------------------- Que voulez-vous faire?\n");
	    printf("\n");
	    printf("-----------------------------'1': Voir la skip-list.\n");
	    printf("\n");
	    printf("-----------------------------'2': Ajouter un intervalle.\n");
	    printf("\n");
	    printf("-----------------------------'3': Supprimer un intervalle.\n");
	    printf("\n");
	    printf("-----------------------------'4': Chercher une couverture d'intervalle.\n");
	    printf("\n");
	    printf("-----------------------------'*': Quitter le programme.\n");
	    
	    scanf("%d", &choix);
	
	    if (choix == 1)
	      {
		// on affiche la skiplist meme vide à chaque choix
		//la liste sera vide si l 'utilisateur ne commence pas par ajouter des intervalles biensur
		AfficheSListe(Sl,afficherIntervalle);
	      }
	
	    else if (choix == 2)
	      {
		// on affiche la skiplist meme vide à chaque choix
		AfficheSListe(Sl,afficherIntervalle);

		int a, b;
	    
		printf("Donnez la borne inferieure de l'intervalle: \n");
		scanf("%d", &a);
	    
		printf("Donnez la borne superieure de l'intervalle: \n");
		scanf("%d", &b);
	    
		affectationIntervalle (e, a, b);
		AjoutSListe(Sl, e,initialisationEltIntervalle);
	      }

	    else if (choix == 3)
	      {
		// on affiche la skiplist meme vide à chaque choix
		AfficheSListe(Sl,afficherIntervalle);

		int a, b;
	    
		printf("Donnez la borne inferieure de l'intervalle: \n");
		scanf("%d", &a);
	    
		printf("Donnez la borne superieure de l'intervalle: \n");
		scanf("%d", &b);
	    
		affectationIntervalle (e, a, b);
		SuppElementSListe(Sl,e,compareIntervalle,testamentIntervalle);
	      }
	
	    else if (choix == 4)
	      {
		// on affiche la skiplist meme vide à chaque choix
		AfficheSListe(Sl,afficherIntervalle);

		float f;
	    
		printf("Donnez un reel:\n");
		scanf("%f", &f);
	    
		CouvertureIntervalSListe(Sl, f);
	      }
	    
	    else if (choix == 5)
	      {
		// on affiche la skiplist meme vide à chaque choix
		AfficheSListe(Sl,afficherIntervalle);

		int a, b;
	    
		printf("Donnez la borne inferieure: \n");
		scanf("%d", &a);
	    
		printf("Donnez la borne superieure: \n");
		scanf("%d", &b);
	    
		affectationIntervalle (e, a, b);
		RechercheElementSListe(Sl,&e,plusPetitIntervalle);
	      }
	    
	    else
	      {
		Testament(Sl,testamentIntervalle);
		continuer = false;
	      }
	  }
	
	return 0;
}
